The document discusses using CUDA within Mathematica. It provides an overview and introduces Mathematica and its API. It then discusses how to use MathLink to allow Mathematica to call CUDA functions in an external program. It provides examples of simple MathLink programs and discusses how to handle different data types like lists, arrays, complex numbers when communicating between Mathematica and external CUDA programs.
This is the last slide of advancedC - Advanced C part 3. In the previous slides we learnt all the fundamentals that is required to learnt Advanced C. In this last slide of Advanced C you will be learning about Multilevel pointers, Command line argument, different kinds of functions, and also you will gain deep knowledge on pre processor and user defined data types. This will help you to improve your knowledge in Advanced C
This is continuation of the slide Advanced C part 1. In part 1 you learnt about fundamentals of C - How to build an algorithm, operators. In this module - Advanced C part 2 you will be learning about functions, pointers and standard Input Output functions. This slide will help you to move a further ahead in Advanced C and gain deeper knowledge on it.
After a recap of implicits I introduce the type class mechanics in Scala. Then I have a look at ways for good non-intrusive type class design. The main focus of this presentation are type classes in Scala. In the last chapter I show the Haskell implementation of my example.
This is the last slide of advancedC - Advanced C part 3. In the previous slides we learnt all the fundamentals that is required to learnt Advanced C. In this last slide of Advanced C you will be learning about Multilevel pointers, Command line argument, different kinds of functions, and also you will gain deep knowledge on pre processor and user defined data types. This will help you to improve your knowledge in Advanced C
This is continuation of the slide Advanced C part 1. In part 1 you learnt about fundamentals of C - How to build an algorithm, operators. In this module - Advanced C part 2 you will be learning about functions, pointers and standard Input Output functions. This slide will help you to move a further ahead in Advanced C and gain deeper knowledge on it.
After a recap of implicits I introduce the type class mechanics in Scala. Then I have a look at ways for good non-intrusive type class design. The main focus of this presentation are type classes in Scala. In the last chapter I show the Haskell implementation of my example.
Scala, Haskell and LISP are examples of programming languages using the functional programming paradigm. Join us in this TechTalk to know why functional programming is so important, how to implement some of its core concepts in your existing programming languages, and how functional programming inspired Google's Map Reduce, Twitter's Algebird, and many other technologies.
By Mohammad Ghabboun - Senior Software Engineer, SOUQ.com
In this chapter we will learn about arrays as a way to work with sequences of elements of the same type. We will explain what arrays are, how we declare, create, instantiate and use them. We will examine one-dimensional and multidimensional arrays. We will learn different ways to iterate through the array, read from the standard input and write to the standard output. We will give many example exercises, which can be solved using arrays and we will show how useful they really are.
Functional Core and Imperative Shell - Game of Life Example - Haskell and ScalaPhilip Schwarz
Ā
See a program structure flowchart used to highlight how an FP program breaks down into a functional core and imperative shell
View a program structure flowchart for the Game of Life
See the code for Game of Lifeās functional core and imperative shell, both in Haskell and in Scala.
Code:
https://github.com/philipschwarz/functional-core-imperative-shell-scala
https://github.com/philipschwarz/functional-core-imperative-shell-haskell
In this chapter we will explore strings. We are going to explain how they are implemented in Java and in what way we can process text content. Additionally, we will go through different methods for manipulating a text: we will learn how to compare strings, how to search for substrings, how to extract substrings upon previously settled parameters and last but not least how to split a string by separator chars. We will demonstrate how to correctly build strings with the StringBuilder class. We will provide a short but very useful information for the most commonly used regular expressions.
First part of this presentation explains basics and advantages of using functional programming approaches with lambda calculus.
Second part of this presentation explains how can we use lambda calculus in C# 3.0
Scala, Haskell and LISP are examples of programming languages using the functional programming paradigm. Join us in this TechTalk to know why functional programming is so important, how to implement some of its core concepts in your existing programming languages, and how functional programming inspired Google's Map Reduce, Twitter's Algebird, and many other technologies.
By Mohammad Ghabboun - Senior Software Engineer, SOUQ.com
In this chapter we will learn about arrays as a way to work with sequences of elements of the same type. We will explain what arrays are, how we declare, create, instantiate and use them. We will examine one-dimensional and multidimensional arrays. We will learn different ways to iterate through the array, read from the standard input and write to the standard output. We will give many example exercises, which can be solved using arrays and we will show how useful they really are.
Functional Core and Imperative Shell - Game of Life Example - Haskell and ScalaPhilip Schwarz
Ā
See a program structure flowchart used to highlight how an FP program breaks down into a functional core and imperative shell
View a program structure flowchart for the Game of Life
See the code for Game of Lifeās functional core and imperative shell, both in Haskell and in Scala.
Code:
https://github.com/philipschwarz/functional-core-imperative-shell-scala
https://github.com/philipschwarz/functional-core-imperative-shell-haskell
In this chapter we will explore strings. We are going to explain how they are implemented in Java and in what way we can process text content. Additionally, we will go through different methods for manipulating a text: we will learn how to compare strings, how to search for substrings, how to extract substrings upon previously settled parameters and last but not least how to split a string by separator chars. We will demonstrate how to correctly build strings with the StringBuilder class. We will provide a short but very useful information for the most commonly used regular expressions.
First part of this presentation explains basics and advantages of using functional programming approaches with lambda calculus.
Second part of this presentation explains how can we use lambda calculus in C# 3.0
operating system ubuntu,linux,MacProgram will work only if you g.pdfaptcomputerzone
Ā
//operating system ubuntu,linux,Mac
Program will work only if you give command like
sum 2 3 or
sum 4 (sub 4 3)
#include
#include
#include
#include
/*Sum function implementation*/
int sum(int number1,int number2){
return number1+number2;
}
/*sub function implementation*/
int sub(int number1,int number2){
return number1-number2;
}
/*mul function implementation*/
int mul(int number1,int number2){
return number1*number2;
}
/*divide function implementation*/
float divide(int number1,int number2){
if(number2==0){
printf(\"We can not divide by 0 \ \");
return 0.0f;
}
return (float)(number1/number2);
}
char *substring(char *string, int position, int length)
{
char *pointer;
int c;
pointer = malloc(length+1);
if (pointer == NULL)
{
printf(\"Unable to allocate memory.\ \");
exit(1);
}
for (c = 0 ; c < length ; c++)
{
*(pointer+c) = *(string+position-1);
string++;
}
*(pointer+c) = \'\\0\';
return pointer;
}
/*Main Function start*/
int main(int argc, char *argv[]){
/*Variable declarations*/
int number1,number2;
char *operator,*str1,*str2;
char line[50];
char s[2] = \" \";
int errorFlag=0;// checking if user entered more then one operands
while(1){
/*User input*/
printf(\"Please Enter the command \");
gets(line);
int len=0;
for(int i=0; line[i]!=\'\\0\'; ++i){len++;}
if(len==0){
return 1;
}
/*Spliting into Tokens*/
operator = strtok(line, \" \");
if(strcmp(operator,\"bye\")==0){
break;
}
/*String to integer --- token1*/
number1=atoi(strtok(NULL, s));
/*Removing ( and ) from String*/
str2=strtok(NULL, s);
char *content;int length=0;
for(int i=0; str2[i]!=\'\\0\'; ++i){length++;}
if(str2[0]==\'(\'){
content=substring(str2,2,length-1);
char *opr=content;
int n1=atoi(strtok(NULL, s));
int n2=atoi(strtok(NULL, s));
/*If user entered more then two operands then it will return some token otherwise it will
return NULL pointer*/
if(strtok(NULL, s)!=NULL){
printf(\"You need to enter operator operand1 operand2 \ \");
errorFlag=1;
}else{
if(strcmp(opr,\"sum\")==0){
number2=sum(n1,n2);
}else if(strcmp(opr,\"sub\")==0){
number2=sub(n1,n2);
}else if(strcmp(opr,\"mul\")==0){
number2=mul(n1,n2);
} else if(strcmp(opr,\"div\")==0){
number2=divide(n1,n2);
}
}
}else{
number2=atoi(str2);
/*If user entered more then two operands then it will return some token otherwise it will return
NULL pointer*/
if(strtok(NULL, s)!=NULL){
printf(\"You need to enter operator operand1 operand2 \ \");
errorFlag=1;
}
}
if(errorFlag!=1){
/*Checking operator by strcmp function*/
if(strcmp(operator,\"sum\")==0){
printf(\"Result %d \ \",sum(number1,number2));
}else if(strcmp(operator,\"sub\")==0){
printf(\"Result %d \ \",sub(number1,number2));
}else if(strcmp(operator,\"mul\")==0){
printf(\"Result %d \ \",mul(number1,number2));
} else if(strcmp(operator,\"div\")==0){
printf(\"Result %.2f \ \",divide(number1,number2));
}
}
}
return 0;
}
/*******************Output***********************/
gopal@gopal:~/Desktop/chegg$ gcc Calculator.c
Calculator.c: In function āmainā:
Calculator.c:67:3: warning: implici.
C++ Please test your program before you submit the answer.pdfaashisha5
Ā
C++. Please, test your program before you submit the answer.
Background:
Circular Linked List: A circular linked list is a linked list where a non-empty list has no null pointers.
Unless empty, each node has a pointer to the next node, and the last node points back to the first
node.
Assigment:
Write a cpp program that will serve the purpose of a test driver for previously written CLinkedList.h
file. Your program will:
1) Create a choice menu and prompt the user for input. Must be case insensitive!
2) Read the input and call for functions outside of main, in order to perform operations chosen by
the user. These functions involve: Inserting Interger, Removing Interger, Forward Print and
Backward Print.
Requirements and Notes:
1. Forwards Print does not require a subfunction in order to produce output. All the other
operations must call corresponding subfunctions.
2. Nodes of the circular list must be arranged in ascending order.
3. User Input must be processed case insensitive, and implemented using the loop.
4. Document your code completely.
5. CLinkedList.h file contains 3 classes.
- Circular linked lists class with following member functions: constructor, copy constructor,
destructor, assignment operator, insert and remove.
- Node class included in the file header.
- A list iterator class provides a public interface to the list. The pointer points at nodes in the linked
list. Its member functions are as follows:
Constructor: Assigns the linked list data member to the parameter, a reference to a circular linked
list.
begin() sets the iterator to the first node of the linked list (or NULL if the list is empty)
isEmpty() returns whether or not the wrapped linked list is empty
isFirstNode() returns whether the present node is the first node of the linked list
isLastNode() returns whether the present node is the last node of the linked list
operator*() returns the data of the node currently pointed at. (You need 2)
operator++() pre-increment operator advances the pointer to the next node in the list, if there is
one
operator++(int) post-increment operator advances the pointer to the next node in the list, if there
is one
6. Insert function must give feedback where it says the position of where the int was inserted for
example: "Inserting 25 in the middle."
7. Remove function must give either one of these types of feedback:
- "Removing 25" if the int given by the user was found in the list
-"Cannot find 25" if it was not. The program will then move the user back to the choice menu.
Files:
// File: Node.h
// Singly-linked list node definition/implementation (also good for circular)
#ifndef NODE_H
#define NODE_H
// Need to prototype template classes if they are to be friends
template <typename eltType> class CLinkedList;
template <typename eltType> class CListItr;
template <typename eltType> class Node
{ private:
Node(eltType info, Node* link = NULL ) :
data(info), next(link)
{};
eltType data;
Node *next;
friend class CLinkedList<eltType>;
friend c.
I am Moffat K. I am a C++ Programming Homework Expert at cpphomeworkhelp.com. I hold a Masters in Programming from London, UK. I have been helping students with their homework for the past 6 years. I solve homework related to C++ Programming.
Visit cpphomeworkhelp.com or email info@cpphomeworkhelp.com. You can also call on +1 678 648 4277 for any assistance with C++ Programming Homework.
I am Baddie K. I am a C++ Homework Expert at cpphomeworkhelp.com. I hold a Masters in Programming from The University of Queensland. I have been helping students with their homework for the past 9 years. I solve homework related to C++. Visit cpphomeworkhelp.com or email info@cpphomeworkhelp.com. You can also call on +1 678 648 4277 for any assistance with C++ Homework.
C++ Background Circular Linked List A circular linked list.pdfsaradashata
Ā
C++
Background:
Circular Linked List: A circular linked list is a linked list where a non-empty list has no null pointers.
Unless empty, each node has a pointer to the next node, and the last node points back to the first
node.
Assigment:
Write a cpp program that will serve the purpose of a test driver for previously written CLinkedList.h
file. Your program will:
1) Create a choice menu and prompt the user for input. Must be case insensitive!
2) Read the input and call for functions outside of main, in order to perform operations chosen by
the user. These functions involve: Inserting Interger, Removing Interger, Forward Print and
Backward Print.
Requirements and Notes:
1. Forwards Print does not require a subfunction in order to produce output. All the other
operations must call corresponding subfunctions.
2. Nodes of the circular list must be arranged in ascending order.
3. User Input must be processed case insensitive, and implemented using the loop.
4. Document your code completely.
5. CLinkedList.h file contains 3 classes.
- Circular linked lists class with following member functions: constructor, copy constructor,
destructor, assignment operator, insert and remove.
- Node class included in the file header.
- A list iterator class provides a public interface to the list. The pointer points at nodes in the linked
list. Its member functions are as follows:
Constructor: Assigns the linked list data member to the parameter, a reference to a circular linked
list.
begin() sets the iterator to the first node of the linked list (or NULL if the list is empty)
isEmpty() returns whether or not the wrapped linked list is empty
isFirstNode() returns whether the present node is the first node of the linked list
isLastNode() returns whether the present node is the last node of the linked list
operator*() returns the data of the node currently pointed at. (You need 2)
operator++() pre-increment operator advances the pointer to the next node in the list, if there is
one
operator++(int) post-increment operator advances the pointer to the next node in the list, if there
is one
6. Insert function must give feedback where it says the position of where the int was inserted for
example: "Inserting 25 in the middle."
7. Remove function must give either one of these types of feedback:
- "Removing 25" if the int given by the user was found in the list
-"Cannot find 25" if it was not. The program will then move the user back to the choice menu.
Files:
// File: Node.h
// Singly-linked list node definition/implementation (also good for circular)
#ifndef NODE_H
#define NODE_H
// Need to prototype template classes if they are to be friends
template <typename eltType> class CLinkedList;
template <typename eltType> class CListItr;
template <typename eltType> class Node
{ private:
Node(eltType info, Node* link = NULL ) :
data(info), next(link)
{};
eltType data;
Node *next;
friend class CLinkedList<eltType>;
friend class CListItr<eltType>;
};
#endif
// File: CLinkedList.h
.
Background Circular Linked List A circular linked list is .pdfaaseletronics2013
Ā
Background:
Circular Linked List: A circular linked list is a linked list where a non-empty list has no null pointers.
Unless empty, each node has a pointer to the next node, and the last node points back to the first
node.
Assigment:
Write a cpp program that will serve the purpose of a test driver for previously written CLinkedList.h
file. Your program will:
1) Create a choice menu and prompt the user for input. Must be case insensitive!
2) Read the input and call for functions outside of main, in order to perform operations chosen by
the user. These functions involve: Inserting Interger, Removing Interger, Forward Print and
Backward Print.
Requirements and Notes:
1. Forwards Print does not require a subfunction in order to produce output. All the other
operations must call corresponding subfunctions.
2. Nodes of the circular list must be arranged in ascending order.
3. User Input must be processed case insensitive, and implemented using the loop.
4. Document your code completely.
5. CLinkedList.h file contains 3 classes.
- Circular linked lists class with following member functions: constructor, copy constructor,
destructor, assignment operator, insert and remove.
- Node class included in the file header.
- A list iterator class provides a public interface to the list. The pointer points at nodes in the linked
list. Its member functions are as follows:
Constructor: Assigns the linked list data member to the parameter, a reference to a circular linked
list.
begin() sets the iterator to the first node of the linked list (or NULL if the list is empty)
isEmpty() returns whether or not the wrapped linked list is empty
isFirstNode() returns whether the present node is the first node of the linked list
isLastNode() returns whether the present node is the last node of the linked list
operator*() returns the data of the node currently pointed at. (You need 2)
operator++() pre-increment operator advances the pointer to the next node in the list, if there is
one
operator++(int) post-increment operator advances the pointer to the next node in the list, if there
is one
6. Insert function must give feedback where it says the position of where the int was inserted for
example: "Inserting 25 in the middle."
7. Remove function must give either one of these types of feedback:
- "Removing 25" if the int given by the user was found in the list
-"Cannot find 25" if it was not. The program will then move the user back to the choice menu.
Files:
// File: Node.h
// Singly-linked list node definition/implementation (also good for circular)
#ifndef NODE_H
#define NODE_H
// Need to prototype template classes if they are to be friends
template <typename eltType> class CLinkedList;
template <typename eltType> class CListItr;
template <typename eltType> class Node
{ private:
Node(eltType info, Node* link = NULL ) :
data(info), next(link)
{};
eltType data;
Node *next;
friend class CLinkedList<eltType>;
friend class CListItr<eltType>;
};
#endif
// File: CLinkedList.h
// C.
The provision of spatial support, especially mapping, during major emergencies has often put enormous pressure on the day to day functionality of various government departments. Examples include the Canberra fires where this support was contracted in and in the Victorian fires of 2003-4 where the Victorian Department of Sustainability and Environment (DSE) called in federal support for mapping and spent many months recovering and catching up on the backlog due to lost work time. The Mapping and Planning Support (MAPS) group was created and its model developed to help alleviate these situations. MAPS was deployed to the recent Victorian fires and have now proven that the model works. This presentation will explain the history and reasoning behind MAPS, the organisational and deployment model, and where we believe the model should go from here.
http://www.spatial.gov.au/Conferences/spatialgov+2009/presentations/social+inclusion/15.aspx
Shoaib Burq Talk on Web2.0 in Government. A talk i recently gave at an Australian Government agency on the lessons from Web2.0 technologies. Download notes: http://sabman.wordpress.com/2007/11/13/learning-interoperability-from-web20/
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
Ā
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
Ā
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Ā
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
Ā
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties ā USA
Expansion of bot farms ā how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks ā Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Ā
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But thereās more:
In a second workflow supporting the same use case, youāll see:
Your campaign sent to target colleagues for approval
If the āApproveā button is clicked, a Jira/Zendesk ticket is created for the marketing design team
Butāif the āRejectā button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
Ā
As AI technology is pushing into IT I was wondering myself, as an āinfrastructure container kubernetes guyā, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefitās both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Ā
Are you looking to streamline your workflows and boost your projectsā efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, youāre in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part āEssentials of Automationā series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Hereās what youāll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
Weāll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Donāt miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
Ā
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Ā
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Ā
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
DevOps and Testing slides at DASA ConnectKari Kakkonen
Ā
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
2. Overview
ā¢ Intro to Mathematica and its API
ā¢ CUDA + Mathematica
ā¢ Some examples
3. Mathematica intro
ā¢ Mathematica is a modular
computational system in which the
kernel is separate from the front end
which handles the interaction with the
user.
ā¢ The most common way to work is to use
interactive documents called notebooks
which mix text input and output as well
as graphics and other material.
4. Structure of
Mathematica
ā¢ An import aspect of Mathematica is
that it can also interact with other
applications.
ā¢ This is achieved through MathLink,
a standardised API for two-way
communication with the kernel.
5. MathLink
ā¢ MathLink allows external programs both
to call Mathematica, and to be called by
Mathematica.
ā¢ We will use MathLink to let Mathematica
call CUDA functions inside an external
program.
6. Simple example
addtwo.tm
:Begin:
:Function: addtwo
:Pattern: AddTwo[i_Integer,j_Integer]
:Arguments: { i, j }
:ArgumentTypes: {Integer,Integer}
:ReturnType: Integer
:End:
9. In[3]:= SetDirectory
" Applications Mathematica.app SystemFiles Links MathLink DeveloperKit
PrebuiltExamples"
Out[3]= Applications Mathematica.app SystemFiles Links MathLink DeveloperKit
PrebuiltExamples
In[4]:= link Install ". addtwo"
Out[4]= LinkObject
Applications Mathematica.app SystemFiles Links MathLink DeveloperKit
PrebuiltExamples addtwo, 524, 8
In[5]:= LinkPatterns link
Out[5]= AddTwo i_Integer, j_Integer
In[6]:= ? AddTwo
AddTwo x , y gives the sum of two machine integers x and y.
In[7]:= AddTwo 2, 3
Out[7]= 5
In[8]:= AddTwo 2^31 1, 1
Out[8]= 2 147 483 648
In[9]:= Uninstall link
Out[9]= Applications Mathematica.app SystemFiles Links MathLink DeveloperKit
PrebuiltExamples addtwo
10. MathLink
Template ļ¬le
ā¢ When a MathLink template ļ¬le is
processed, two basic things are done:
ā¢ :Pattern:& :Arguments: speciļ¬cations
are used to generate a Mathematica
deļ¬nition
ā¢ :Function:, :ArgumentTypes:
& :ReturnType: speciļ¬cations are used
to generate C source code
12. Handling
Lists & Arrays
:Begin: int sumList(int *a, long alen)
:Function: sumList {
:Pattern: SumList[a_List] int i, tot=0;
:Arguments: {a}
:ArgumentTypes:{IntegerList} for(i=0; i<alen; i++)
:ReturnType: Integer tot += a[i];
:End:
return tot;
}
13. Manual ArgumentTypes
:Begin:
:Function: sumList
:Pattern: SumList[a:{___Integer}]
:Arguments: {a}
:ArgumentTypes:{Manual}
:ReturnType: Integer
:End:
int sumList(void) { int sumList(void) {
int n, i; int n;
int a[MAX]; int *a;
MLCheckFunction(stdlink, "List", &n); MLGetInteger32List(stdlink, &a, &n);
...
for (i=0; i<n; i++) MLReleaseInteger32List(stdlink, a, n);
MLGetInteger32(stdlink, a+i); ...
... }
}
14. Array of arb. depth
#include <mathlink.h>
/* read an array of double-precision floating-point numbers from a link */
void f(MLINK lp)
{
double *data;
int *dims;
char **heads;
int d; /* stores the rank of the array */
if(! MLGetRealArray(lp, &data, &dims, &heads, &d))
{
/* unable to read the array from lp */
return;
}
/* ... */
MLReleaseRealArray(lp, data, dims, heads, d);
}
15. Handling Complex
numbers
In[1]:= Head 2 3
Out[1]= Complex
If you pass a list of complex numbers to your external program,
then MLGetReal64Array() will create a two-dimensional array
containing a sequence of pairs of real and imaginary parts. In this
case, heads[0] will be "List" while heads[1] will be "Complex".
//get an array of floating-point numbers of any depth
MLGetReal64Array(stdlink,double**a,int**dims,char***heads,int*d);
16. Summary of API
//get a list of integers, allocating the memory needed to store it
MLGetInteger32List(stdlink,int**a,int*n);
//get a list of floating-point numbers
MLGetReal64List(stdlink,double**a,int*n);
//release the memory associated with a list of integers
MLReleaseInteger32List(stdlink,int*a,int n);
//release the memory associated with a list of floating-point numbers
MLReleaseReal64List(stdlink,double*a,int n);
//get an array of integers of any depth
MLGetInteger32Array(stdlink,int**a,int**dims,char***heads,int*d);
//get an array of floating-point numbers of any depth
MLGetReal32Array(stdlink,float**a,int**dims,char***heads,int*d);
//release memory associated with an integer array
MLReleaseInteger32Array(stdlink,int*a,int*dims,char**heads,int d);
//release memory associated with a floating-point array
MLReleaseReal32Array(stdlink,float*a,int*dims,char**heads,int d);
17. Manual ReturnType
void bits(int i)
{
int a[32], k;
:Begin:
:Function: bits for(k=0; k<32; k++) {
:Pattern: ToBits[i_Integer] a[k] = i%2;
:Arguments: {i} i >>= 1;
:ArgumentTypes:{Integer} if (i==0) break;
:ReturnType: Manual }
:End:
if (k<32) k++;
MLPutInteger32List(stdlink,
a, k);
return;
}
18. General array
int a[8][16][100];
int dims[] = {8, 16, 100};
MLPutInteger32Array(stdlink, a, dims, NULL, 3);
or
int ***a;
MLPutFunction(stdlink, "List", n1);
for (i=0; i<n1; i++) {
MLPutFunction(stdlink, "List", n2);
for (j=0; j<n2; j++) {
MLPutInteger32List(stdlink, a[i][j], n3);
}
}
20. Return Complex
numbers
// Complex data type
typedef float2 Complex;
Complex* h_convolved_signal;
// Return transformed signal to Mathematica as a Complex List
MLPutFunction(stdlink,"List",n);
for (long i = 0; i < n; i++) {
MLPutFunction(stdlink,"Complex",2);
MLPutFloat(stdlink,h_convolved_signal[i].x*norm);
MLPutFloat(stdlink,h_convolved_signal[i].y*norm);
}
22. Error & Interrupt
if(! MLPutInteger(stdlink, 10)) if(! MLPutReal64(stdlink, 3.22))
{ {
/* check the possible errors */ /* unable to send 3.22 to lp */
switch(MLError(stdlink)) printf("MathLink Error: %sn",
{ MLErrorMessage(stdlink));
case MLEDEAD: MLClearError(stdlink);
/* the link died unexpectedly */ }
break;
case MLECLOSED:
/* the other side closed the link */
break;
case MLEOK:
/* no error occurred */ while(len--)
break; {
default: sum += *list++;
/* ... */ /* check for the abort */
} if(MLAbort) return (double)0;
} }
23. Running on remote
computers
$ ./addtwo -linkcreate -linkprotocol TCPIP
Link created on: 63166@192.168.1.107,63167@192.168.1.107
In[5]:= Install LinkConnect "63166 192.168.1.107,63167 192.168.1.107",
LinkProtocol "TCPIP"
Out[5]= LinkObject 63166 192.168.1.107,63167 192.168.1.107, 1110, 8
In[6]:= AddTwo 2, 3
Out[6]= 5
24. Mathematica + CUDA
#include <cutil_inline.h>
int main(int argc, char **argv)
{
// use command-line specified CUDA device,
// otherwise use device with highest Gflops/s
if(cutCheckCmdLineFlag(argc, (const char**)argv, "device"))
cutilDeviceInit(argc, argv);
else
cudaSetDevice( cutGetMaxGflopsDeviceId() );
return MLMain(argc, argv);
}
25. mathematica_cuda
# Add source files here
EXECUTABLE := cuFourier
# CUDA source files (compiled with cudacc)
CUFILES := cuFourier.cu
# CUDA dependency files
# CU_DEPS :=
# C/C++ source files (compiled with gcc / c++)
# CCFILES :=
# Additional libraries needed by the project
USECUFFT := 1
# MathLink Template files
TMFILES := cuFourier.tm
###################################################
# Rules and targets
include ../../common/common.mk
33. cuFourier.cu
// includes system
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
// includes cuda
#include <cufft.h>
#include <cutil_inline.h>
// includes mathlink
#include <mathlink.h>
// Complex data type
typedef float2 Complex;
///////////////////////////////////////////////////////////////
// Showing the use of CUFFT for fast convolution using FFT.
///////////////////////////////////////////////////////////////
extern "C" void cuFourier1D(double*, long);
35. void cuFourier1D (double *h_A, long n)
{
double norm = 1.0/sqrt((double) n);
long mem_size = sizeof(Complex) * n;
// Allocate host memory for the signal
Complex* h_signal = (Complex*)malloc(mem_size);
// Initalize the memory for the signal
for (long i = 0; i < n; ++i) {
h_signal[i].x = (float)h_A[i];
h_signal[i].y = 0.0f;
}
// Allocate device memory for signal
Complex* d_signal;
cutilSafeCall(cudaMalloc((void**)&d_signal, mem_size));
// Copy host memory to device
cutilSafeCall(cudaMemcpy(d_signal, h_signal, mem_size,
cudaMemcpyHostToDevice));
37. // Return transformed signal to Mathematica as a Complex List
MLPutFunction(stdlink, "Map", 2);
MLPutFunction(stdlink, "Function", 2);
MLPutFunction(stdlink, "List", 1);
MLPutSymbol(stdlink, "x");
MLPutFunction(stdlink, "Apply", 2);
MLPutSymbol(stdlink, "Complex");
MLPutSymbol(stdlink, "x");
MLPutFunction(stdlink, "Partition", 2);
MLPutFunction(stdlink, "Times", 2);
MLPutReal(stdlink, norm);
MLPutReal32List(stdlink, (float*)h_convolved_signal, 2*n);
MLPutInteger(stdlink, 2);
// Cleanup memory
free(h_signal);
cudaThreadExit();
}
38. Makefile
##################################################################
#
# Build script for project
#
##################################################################
# Add source files here
EXECUTABLE := cuFourier
# CUDA source files (compiled with cudacc)
CUFILES := cuFourier.cu
# Additional libraries needed by the project
USECUFFT := 1
# MathLink Template files
TMFILES := cuFourier.tm
##################################################################
# Rules and targets
include ../../common/common.mk
39. In[35]:= link
Install
" Users kashif Dropbox 20090630_NDVI_CUDA mathematica_cuda bin darwin
release cuFourier"
Out[35]= LinkObject
Users kashif Dropbox 20090630_NDVI_CUDA mathematica_cuda bin darwin
release cuFourier, 605, 9
In[36]:= LinkPatterns link
Out[36]= CUFourier1D a : __ ?NumericQ
In[37]:= ListLinePlot Abs CUFourier1D RandomReal 1, 200 ^2
0.4
0.3
Out[37]=
0.2
0.1
50 100 150 200
In[38]:= Uninstall link
Out[38]= Users kashif Dropbox 20090630_NDVI_CUDA mathematica_cuda bin darwin
release cuFourier
40. Image Deconvolution
for Life Sciences
ā¢ Confocal and Wideļ¬eld microscopy
3D or 4D images
ā¢ Multichannel (3 or more channels)
ā¢ Comes in a wide variety of formats
41. Bio-Formats Java lib.
ā¢ Standalone Java library for reading and
writing life science image formats
ā¢ Get both the pixels and metadata
ā¢ Licensed under GPL
ā¢ http://www.loci.wisc.edu/ome/
formats.html
42. Java + Mathematica:
J/Link
Needs "JLink`"
InstallJava
LinkObject
' usr local Wolfram Mathematica 7.0 SystemFiles Java Linux x86 64 bin java' classpath
" usr local Wolfram Mathematica 7.0 SystemFiles Links JLink JLink.jar"
Xmx256m Djava.system.class.loader com.wolfram.jlink.JLinkSystemClassLoader
Djava.util.prefs.PreferencesFactory com.wolfram.jlink.DisabledPreferencesFactory
com.wolfram.jlink.Install init " tmp m000001207601", 4, 4
ReinstallJava ClassPath " home kashif Dropbox BioFormats Java loci_tools.jar"
LinkObject
' usr local Wolfram Mathematica 7.0 SystemFiles Java Linux x86 64 bin java' classpath
" usr local Wolfram Mathematica 7.0 SystemFiles Links JLink JLink.jar"
Xmx256m Djava.system.class.loader com.wolfram.jlink.JLinkSystemClassLoader
Djava.util.prefs.PreferencesFactory com.wolfram.jlink.DisabledPreferencesFactory
com.wolfram.jlink.Install init " tmp m000002207601", 8, 4
64. //Release d_A and d_B
cutilSafeCall( cudaFree(d_B) );
cutilSafeCall( cudaFree(d_A) );
//Read back GPU results into h_C_GPU
cutilSafeCall( cudaMemcpy(h_C_GPU, d_C, dims_A[0]*dims_A[1]*sizeof(float),
cudaMemcpyDeviceToHost) );
//Release d_C
cutilSafeCall( cudaFree(d_C) );
//Return result
MLPutReal32List(stdlink, h_C_GPU, dims_A[0]*dims_A[1]);
//Release h_A and h_B
MLReleaseInteger16Array(stdlink, h_A, dims_A, heads_A, rank_A);
MLReleaseInteger16Array(stdlink, h_B, dims_B, heads_B, rank_B);
cudaThreadExit();
65. NDVI Kernel
///////////////////////////////////////////////////////////////////////////////
// Calculate ndvi of two channels d_A and d_B on GPU and store result in d_C
///////////////////////////////////////////////////////////////////////////////
__global__ void ndviGPU(
float *d_C,
short int *d_A,
short int *d_B,
int width,
int height
){
unsigned int xIndex = blockIdx.x * blockDim.x + threadIdx.x;
unsigned int yIndex = blockIdx.y * blockDim.y + threadIdx.y;
if(xIndex < width && yIndex < height)
{
unsigned int i = yIndex * (width) + xIndex;
d_C[i] = __fdividef( (float)(d_A[i] - d_B[i]), (float)(d_A[i] + d_B[i]) );
}
}