---
name: "futhark-c"
section: "1"
platform: "linux"
package: "futhark"
version: "0.25.27-1+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/futhark-c"
---

# futhark-c(1)

compile Futhark to sequential C

## NAME

futhark-c - compile Futhark to sequential C

## SYNOPSIS

futhark c \[options...\] \<program.fut\>

## DESCRIPTION

**futhark c** translates a Futhark program to sequential C code, and either compiles that C code with a C compiler (see below) to an executable binary program, or produces a **.h** and **.c** file that can be linked with other code..  The standard Futhark optimisation pipeline is used, and

The resulting program will read the arguments to the entry point (**main** by default) from standard input and print its return value on standard output.  The arguments are read and printed in Futhark syntax.

## OPTIONS

- **-h**

  Print help text to standard output and exit.

- **--entry-point** *NAME*

  Treat this top-level function as an entry point.

- **--library**

  Generate a library instead of an executable.  Appends **.c**/**.h** to the name indicated by the **-o** option to determine output file names.

- **-o** *outfile*

  Where to write the result.  If the source program is named **foo.fut**, this defaults to **foo**.

- **--safe**

  Ignore **unsafe** in program and perform safety checks unconditionally.

- **--server**

  Generate a server-mode executable that reads commands from stdin.

- **-v** *verbose*

  Enable debugging output.  If compilation fails due to a compiler error, the result of the last successful compiler step will be printed to standard error.

- **-V**

  Print version information on standard output and exit.

- **-W**

  Do not print any warnings.

- **--Werror**

  Treat warnings as errors.

## ENVIRONMENT VARIABLES

**CC**

The C compiler used to compile the program.  Defaults to **cc** if unset.

**CFLAGS**

Space-separated list of options passed to the C compiler.  Defaults to **-O3 -std=c99** if unset.

## EXECUTABLE OPTIONS

The following options are accepted by executables generated by **futhark c**.

- **-h, --help**

  Print help text to standard output and exit.

- **-b, --binary-output**

  Print the program result in the binary output format.  The default is human-readable text, which is very slow.  Not accepted by server-mode executables.

- **--cache-file=***FILE*

  Store any reusable initialisation data in this file, possibly speeding up subsequent launches.

- **-D, --debugging**

  Perform possibly expensive internal correctness checks and verbose logging.  Implies **-L**.

- **-e,***--entry-point**=*****FUN**

  The entry point to run.  Defaults to **main**.  Not accepted by server-mode executables.

- **-L, --log**

  Print various low-overhead logging information to stderr while running.

- **-n, --no-print-result**

  Do not print the program result.  Not accepted by server-mode executables.

- **-P, --profile**

  Gather profiling data during execution.  Mostly interesting in **--server** mode.  Implied by **-D**.

- **--param=***ASSIGNMENT*

  Set a tuning parameter to the given value. **ASSIGNMENT** must be of the form **NAME=INT** Use **--print-params** to see which names are available.

- **--print-params**

  Print all tuning parameters that can be set with **--param** or **--tuning**.

- **-r,***--runs**=*****NUM**

  Perform NUM runs of the program.  With **-t**, the runtime for each individual run will be printed.  Additionally, a single leading warmup run will be performed (not counted).  Only the final run will have its result written to stdout.  Not accepted by server-mode executables.

- **-t,***--write-runtime-to**=*****FILE**

  Print the time taken to execute the program to the indicated file, an integral number of microseconds.  Not accepted by server-mode executables.

- **--tuning=***FILE*

  Read size=value assignments from the given file.

## SEE ALSO

*futhark-opencl*, *futhark-cuda*, *futhark-test*

## COPYRIGHT

2013-2020, DIKU, University of Copenhagen
