Skip to content
veaceslav edited this page Dec 30, 2012 · 4 revisions

Welcome to WHC IDE wiki page. Here you can find various information about this project, about what it can do and how to compile/run and use it.

Description

WHC IDE is an IDE written in C++/Qt for development of distributed applications that use OpenCL to take advantage of GPU and CPU power. WHC IDE is at early development stage, now it's on version 1.0 beta. It allows you to create a project and start developing applications.For more info about project file structure, check Project File Structure section below.

It's designed to be easily developed so it was split in modules: Project Management, Build Module, Run Module, Settings, Workflow Diagram Module and IDE Core class. For more info about how to use WHC IDE check "WHC IDE Tutorial"(comming soon).

Platforms

WHC IDE can be compiled on all 3 platforms(Windows, Linux, Mac(it technically should, i don't have a mac to test, but I accept donations :) ).

  • Linux & Mac - can be compiled with both QtCreator and cmake(see "Build" section)
  • Windows - can be compiled only with QtCreator

Build

In order to build the WHC IDE you need a c++ compiler(like g++) and Qt SDK/Qt Development Packages. OpenCL libs are shipped with IDE, so you don't need to have them installed, or you can develop without having OpenCL compatible devices.

Cmake

In you cloned directory

  • $ mkdir build && cd build
  • $ cmake ..
  • $ make -j 4 (four is the number of threads you want to use, in order to speed-up)
  • Executable is ./whc in /src folder

Qt Creator

  • Open IDE.pro with QtCreator
  • Run
  • Enjoy

Deploy

WHC IDE does not have deploy options yet (no make install yet :(, comming soon ), but you can use Inno setup compiler to compile the make.iss and deploy in Windows

WHC IDE Project Structure

WHC Use a simple xml to store data about it's project. Project file have a big <project></project> tag that have project name as attribute. The rest is split in tree:

Tasks - <tasks>

Tasks tag is used to hold toghether all mini-programs that must be executed in a certain order. it contains <task> tags with the following attributes:

  • x - number of inputs
  • y - number of outputs (now, only one is supported)
  • id - unique number to identify each task
  • name - task name

Data

Data tag usually contains multiple data groups(folders with data). Each group have a <group> tag Group tag have following attributes:

  • x - number of inputs (always 1, not used)
  • y - number of outputs(always 1, not used)
  • name - folder's name Each group can contain zero,one or more / tag with attribute name.

Diagram

The most difficult part project file encoding. <diagram> tag can contain 2 types of tags:

<item>

Item is used to store data about a diagram item and have the following attributes:

  • x - item position on x axis, used to store items position in the diagram area
  • y - item position on y axis, used to store items position
  • diagId - unique diagram id. Task id can't be used because multiple diagram items can have the same Task id.
  • type - item type: 0 means task and 1 means data item
  • id - Task or Data id

<arrow>

Arrow tag is used to encode a link between to connectors(each diagram item have multiple connectors and each connector have it's own id), so it holds the following attributes:

  • parentInId - DiagId of the destination item(destination is where arrow points)
  • parentOutId - DiagId of the source item(source is from where arrow comes)
  • connectorOutId - Connector id from parentOutId
  • connectorInId - Connector id from parentInId
Clone this wiki locally