Giter Club home page Giter Club logo

veo-fortran's Introduction

VEO in Fortran

This little example shows how VEO (Vector Engine Offloading) can be used from Fortran. Instead of having all VEO API converted to Fortran, this example implements the VEO calls specific to the program in C and uses them with the help of ISO_C_BINDING.

Files and their role

hello.f03: Fortran main program. Runs on the vector host (VH).

libvehello.f03: Fortran offloaded kernel, supposed to run on the vector engine (VE).

veo_glue_code.c: Specialized code that deals with VEO details and calls the VEO kernel in libvehello.f03. This is in C because the VEO API is in C. The glue code uses static VEO linking because that allows the use of OpenMP insode the VEO kernels. This is currently a limitation of VEO.

veo_glue.f03: Fortran module implementing the interfaces to the functions defined in veo_glue_code.c.

Build and test

Clone the repository:

git clone https://github.com/efocht/veo-fortran

Build the files (an an Aurora system!):

cd veo-fortran

make

Run the test:

OMP_NUM_THREADS=4 ./hello

The env variable OMP_NUM_THREADS is being passed and used by the VE kernel. You can also specify the VE ID on which the kernel should run:

export VE_NODE_NUMBER=<ve_node_id>

veo-fortran's People

Contributors

efocht avatar

Stargazers

Kazu Komatsu avatar

Watchers

 avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.